package com.alstudio.core.voip;

import java.util.ArrayList;

import com.alstudio.module.xmpp.protocol.xmpp.packact.ALMessage;
import com.alstudio.pojo.module.user.User;
import com.alstudio.utils.android.notification.ALNotification;

public interface ALVoipCallManagerEngin {

	public void addChatMsg(ALMessage msg);

	public void clearChatMsg();

	public ArrayList<ALMessage> getChatMsgs();

	public void setCallSession(ALMessage session);

	public ALMessage getCallSession();

	public void onCallStateChanged(CallState state, ALMessage msg);

	public void onNewCallChatMsgReceived(ALMessage msg);

	public void clear();

	public CallState getCurrentState();

	public int getLocalTime();

	public void setVoipLocalCallingTimeCallback(VoipLocalTimeCallback callback);

	public VoipCallIconState getCallIconState();

	public void setCallIconState(VoipCallIconState state);

	public void handupCall();

	public void rejectCall();

	public void showInCallNotification();

	public void removeInCallNotification();

	public void showNewCallChatMsgNotification();
	
	public void removeNewCallChatMsgNotification();
	
	public void showOutGoingCallNotification();

	public void showInCommingCallNotification();

	public void showInCommingCallNoticeNotification();

	public void removeOutGoingCallNotification();

	public void removeInCommingCallNotification();

	public void removeInCommingCallNoticeNotification();
	
	public void removeInCommingCallMissedNotification();

	public int getMissedCallCount();

	public void missedCallCountIncreament();

	public void resetMissedCallCount();
	
	public void updateCallUserFriendShipState(String jid,boolean isFriend);
	
	public void forceFinishCall();
}
